\documentclass[12pt]{article}
%页边距
\usepackage[a4paper,left=3cm,right=3cm]{geometry}

%1.5倍的行间距
\linespread{1.5}

%中文,及字体
\usepackage{xeCJK}
\setmainfont{Times New Roman}
\setCJKmainfont{SimSun}   %for WSL
%\setCJKmainfont{Songti SC}

%生成书签
\usepackage[bookmarks=true,colorlinks,linkcolor=black]{hyperref}

%表格跨页
\usepackage{longtable}

%可以使用如下方法注释
%\begin{comment}
%\end{comment}
%\usepackage{comment}

%将章节名称由英文改为中文（chapter 1改为第一章）
\usepackage{titlesec}
\titleformat{\chapter}{\raggedright\Huge\bfseries}{第\,\thechapter\,章}{1em}{}
\titleformat{\section}{\raggedright\Large\bfseries}{\,\thesection\,}{1em}{}
\titleformat{\subsection}{\raggedright\large\bfseries}{\,\thesubsection\,}{1em}{}

%改进的数学宏包，重点在align
\usepackage{amsmath}

%公式编号按节
\numberwithin{equation}{section}

%可以产生有颜色的符号
\usepackage{color}

%段落首行缩进
\usepackage{indentfirst}
\setlength{\parindent}{2em}  %设置缩进2个汉字

%paragraph换行问题
\usepackage{titlesec}

%引入插图命令\includegraphics
\usepackage{graphicx}

%连续引用多个文献
\usepackage[square,comma,sort&compress,numbers]{natbib}

%正文双栏
%\usepackage{multicol}

%去掉”图“字后面的冒号
\usepackage{caption}
\DeclareCaptionLabelSeparator{twospace}{\ ~}
\captionsetup{labelsep=twospace}

%使用subfigure命令，暂时不用这个命令，用subfloat代替
%\usepackage{subfigure}
\usepackage{float}
\usepackage{subfig}

%四级标题
\setcounter{secnumdepth}{4}

%表格，三线表
\usepackage{booktabs}

%表内内容换行
\usepackage{makecell}

%合并行
\usepackage{multirow}

%带颜色的高亮显示
\usepackage{tcolorbox}

%算法
\usepackage[linesnumbered,ruled,vlined]{algorithm2e}
%%% Coloring the comment as blue
\newcommand\mycommfont[1]{\footnotesize\ttfamily\textcolor{blue}{#1}}
\SetCommentSty{mycommfont}
\SetKwInput{KwInput}{Input}                % Set the Input
\SetKwInput{KwOutput}{Output}              % set the Output
% Write Function with word ``Function''
\SetKwProg{Fn}{Function}{:}{}

%%%%%%引用代码%%%%%%
\usepackage{xcolor}
\usepackage{listings}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}

\lstdefinestyle{mystyle}{
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codegreen},
    keywordstyle=\color{magenta},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\ttfamily\footnotesize,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2
}
\lstset{style=mystyle}
%参考https://www.overleaf.com/learn/latex/Code_listing
%%%%%%引用代码%%%%%%

%paragraph换行问题
\titleformat{\paragraph}[block]{\normalsize\bfseries}{\theparagraph}{1em}{}

\bibliographystyle{plain} %参考文献样式

%将figure, table等改为汉字，具体命令要放到汉字环境中，否则会出错
%将figure替换为图
\renewcommand{\figurename}{图}
%将table替换为表
\renewcommand{\tablename}{表}
%将content替换为表
\renewcommand{\contentsname}{目 录}

%\today改成中文日期
\renewcommand{\today}{\number\year 年 \number\month 月 \number\day 日}

%题目
\title {课题组中文报告模板}
\author{老段}
\date{\today}

%正文从这里开始
\begin{document}
	
%生成封面
\maketitle

%生成目录
\tableofcontents
\newpage

\section{模板说明}
课题组内部撰写中文报告都要使用该模板。必须遵守的约定：
\begin{itemize}
	\item 图片必须放在文档当前目录的figure目录中；
	\item 公式label：以eqn开始，后面的字符描述公式的属性，如：equEuler；
	\item 图片label：以fig开始，后面字符与图题一致；图片命名也要与图题相关；
	\item 表格label：以tab开始，后面字符与表格内容一致；
	\item 算法描述统一使用algorithm；
\end{itemize}

\section{常用的序列表达}
	首先是itemize：
  	\begin{itemize}
    	\item itemzie；
    	\item[+] 可以定义不同的符号；
    	\item[-] 这个是减号，还可以用很多。 
  	\end{itemize}
  
  	其次是带编号的enumerate：
  	\begin{enumerate}
    	\item enumerate；
    	\item 也可以定义不同的数字样式；
    	\item 具体定义查百度或文档。
  	\end{enumerate}
	
	设置编号格式，假设是流程说明（其它格式替换“步骤”和“子步骤”即可）：
	%\renewcommand{\theenumii}{\roman{enumii}} % 定义第二层嵌套的数字形式，可以roman，arabic等 
	\renewcommand{\labelenumi}{步骤 \theenumi}
	\renewcommand{\labelenumii}{子步骤 \theenumii}
	\begin{enumerate}
		\item 流程A；
		\item 流程B；
		\begin{enumerate}
			\item 子流程a；
			\item 子流程b。
		\end{enumerate}
		\item 流程C。
	\end{enumerate}
	
	最后是描述型列表description：
  	\begin{description}
    	\item[description] 描述性的序列，不好看，用的少；
    	\item[lib] 存储程序编译得到的库文件。
  	\end{description}

\section{公式编辑}
	带大括号的公式如式\ref{equBmatrix}所示。
	\begin{equation}
  		\label{equBmatrix}
  		\mathbf{g}_i = \begin{Bmatrix}
               		        \mathbf{X} \\
                       		\mathbf{Y} \\
                       		\mathbf{Z}
                 			\end{Bmatrix}_i
	\end{equation}

	多行公式可以如式（\ref{equMultiLineEqu1}）所示，也可以用align，如式（\ref{equMultiLineEqu1}）所示。
	\begin{equation}
		\label{equMultiLineEqu1}
		\min_{\mathbf{x} \in R^n} f( \mathbf{x} ) \quad \text{subject\ to} \quad
		\begin{matrix}
			c_i(\mathbf{x}) = 0,   & i \in \mathcal{E} \\
			c_i(\mathbf{x}) \ge 0, & i \in \mathcal{I}
		\end{matrix}
	\end{equation}
	
	\begin{align}
  		\label{equMultiLineEqu1}
  		\min & \quad f  \nonumber \\
  		s.t &  \quad c_i(\mathbf{x}) = 0,   \quad  i \in \mathcal{E} \\
  		    &  \quad c_i(\mathbf{x}) \ge 0, \quad i \in \mathcal{I} \nonumber   
	\end{align}	
	
\section{插入表格}
	一个基本的三线表如表\ref{tableSanxianbiao}所示。
	\begin{table}[H]
		\caption{一个简单的三线表}
		\label{tableSanxianbiao}
		\centering
		%合理使用p{4em}能够有效控制表格的宽度
		\begin{tabular}{p{4em} c p{4em} c}
			\hline
  			              & 第二列     & 第三列      & 第四列   \\
			\hline
			初始结果  & 0.8888    & 1.0           & 20.00 \\
			优化结果  & 0.8888    & 1.0           & 20.00 \\
			相对变化  & +0.00\% & -0.00\%   & +0.00\% \\
			\hline
		\end{tabular}
	\end{table}

    行列合并的三线表如表\ref{tableSanxianbiaoMRMC}所示。
	\begin{table}[h]
		\caption{行列合并的三线表}
		\label{tableSanxianbiaoMRMC}
		\centering
		%合理使用p{4em}能够有效控制表格的宽度
		\begin{tabular}{ccc}
			\hline
  			\multicolumn{2}{c}{两列合并一列}	     & 值     \\
			\hline
			\multirow{4}{*}{四行合并一行}  &  类型1     & A  \\
			                              &  类型2     & N   \\
			                              &  类型3     & M   \\
			                              &  类型4     & B   \\
			\hline
		\end{tabular}
	\end{table}	

\section{插入图片}
	插入一个图，如图\ref{figFig1}所示。
	\begin{figure}[H]
		\centering
		\includegraphics[width=8cm]{figure/fig1.jpg}
		\caption{一幅图示例}
		\label{figFig1}
	\end{figure}
	
	【推荐】插入多个子图，使用subfloat，效果如图\ref{figMultiFigSubFloat}所示，还可以分别引用子图，如子图一是\ref{figMultiFigSubFloat1}。
	\begin{figure}[H]
		\centering
		\subfloat[第一幅图]{
		\label{figMultiFigSubFloat1}
		\includegraphics[width=4cm]{figure/fig1.jpg}}
		\subfloat[第二幅图]{
		\label{figMultiFigSubFloat2}
		\includegraphics[width=4cm]{figure/fig1.jpg}}
		\subfloat[第三幅图]{
		\label{figMultiFigSubFloat3}
		\includegraphics[width=4cm]{figure/fig1.jpg}}
		\caption{使用subfloat插入三幅图}
		\label{figMultiFigSubFloat}
	\end{figure}
	
	插入子图还可以使用minipage，如图\ref{figMultiFigMinpage}所示，也可以引用子图，如\ref{figMultiFigMinpage1}。
	\begin{figure}[H]
  		\centering
  		\begin{minipage}{5cm}
    		\centerline{\includegraphics[width=6cm]{figure/fig1.jpg}}
    		\centerline{a) 第一幅图}
    		\label{figMultiFigMinpage1}
  		\end{minipage}
  		\begin{minipage}{5cm}
    		\centerline{\includegraphics[width=6cm]{figure/fig1.jpg}}
    		\centerline{b) 第二幅图}
    		\label{figMultiFigMinpage1}
  		\end{minipage}
  		\caption{使用minipage插入两幅图}
  		\label{figMultiFigMinpage}
	\end{figure}
	
\section{算法}
参考：

https://www.overleaf.com/project/5c3a256985b4760f9712d78a

https://www.overleaf.com/project/5ea367ff06429b00018a5a5b

\begin{algorithm}[H]
\DontPrintSemicolon
  
  \KwInput{Your Input}
  \KwOutput{Your output}
  \KwData{Testing set $x$}
  $\sum_{i=1}^{\infty} := 0$ \tcp*{this is a comment}
  \tcc{Now this is an if...else conditional loop}
  \If{Condition 1}
    {
        Do something    \tcp*{this is another comment}
        \If{sub-Condition}
        {Do a lot}
    }
    \ElseIf{Condition 2}
    {
    	Do Otherwise \;
        \tcc{Now this is a for loop}
        \For{sequence}    
        { 
        	loop instructions
        }
    }
    \Else
    {
    	Do the rest
    }
    
    \tcc{Now this is a While loop}
   \While{Condition}
   {
   		Do something\;
   }

\caption{Example code}
\end{algorithm}



\begin{algorithm}[H]
\DontPrintSemicolon
 
  \KwInput{A graph $G$}
  \KwOutput{A  vertex of $G$}
 
  $s_n, \ldots, s_1  \leftarrow L$;  $s_1\leftarrow x$;  $s_1 \leftarrow y$\; \tcp*{ x is a constant}
 

  \If {$e(y)=2r-1$} 
  {
  output $y$\;
  }
   \Else    {Choose   $t(y)\in F(y)$} 
   
   \If {$2r-2 >d(y,t(y))$}
   {
   output $x$\;
   }
   \Else{ Choose $w(y)\in W(y, t(y))$\;}
   
    let $L' \leftarrow L$, where $L'$ is formed by removing
    $\{s_j: r>d(w(y), s_j)\}$ from $L$. 
       
      \If   { $L$ is empty} 
      {
      output $x$
      }
     
           \Else{   $s_k\leftarrow y$} \tcp*{where $s_k$ is right-most entry of $L$}
\end{algorithm}

\begin{algorithm}[H]
\SetKwInput{KwInput}{Input}                % Set the Input
\SetKwInput{KwOutput}{Output}              % set the Output
\DontPrintSemicolon
  
  \KwInput{Your Input}
  \KwOutput{Your output}
  \KwData{Testing set $x$}

% Set Function Names
  \SetKwFunction{FMain}{Main}
  \SetKwFunction{FSum}{Sum}
  \SetKwFunction{FSub}{Sub}
 
% Write Function with word ``Function''
  \SetKwProg{Fn}{Function}{:}{}
  \Fn{\FSum{$first$, $second$}}{
        a = first\;
        b = second\;
        sum = first + second\;
        \KwRet sum\;
  }
  \;

% Write Function with word ``Def''
  \SetKwProg{Fn}{Def}{:}{}
  \Fn{\FSub{$first$, $second$}}{
        a = first\;
        b = second\;
        sub = first - second\;
        \KwRet sub\;
  }
  \;

  \SetKwProg{Fn}{Function}{:}{\KwRet}
  \Fn{\FMain}{
        a = 5\;
        b = 10\;
        Sum(5, 10)\;
        Sub(5, 10)\;
        print Sum, Sub\;
        \KwRet 0\;
  }
\end{algorithm}

\section{其它特殊编辑方法}
	\subsection{引用代码}
	代码引用可以用lstlisting，如下所示，源码复制过来即可，不要再加多余的缩进。
	
\begin{lstlisting}[language=Python, caption=Python example]
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable
    
    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;
                
                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)
                
                VT = np.zeros((n*m,1), int)
    
    return M
\end{lstlisting}

\begin{lstlisting}[language=Sh, caption=Shell example]
#!/bin/bash
# This script displays the date and who's logged on
echo  The time and date are:
date
echo "Let's see who's logged into the system:"
who
\end{lstlisting}

	支持当下绝大部分的语言，具体参考：
\begin{lstlisting}	
https://www.overleaf.com/learn/latex/Code_listing#Supported_languages
\end{lstlisting}

	\subsection{神器tcolor}
	一个简单的示例：
	\begin{tcolorbox}
		简单示例。
	\end{tcolorbox} 

	稍微复杂一点的示例，更多问题请看手册。
	\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=My nice heading]
		This is another \textbf{tcolorbox}.
		\tcblower
		Here, you see the lower part of the box.
	\end{tcolorbox}

	\subsection{带背景色文本}
	这一部分是手动编写代码引用，代码引用lstlisting失效时，可以参考。
	
\colorbox[rgb]{1,1,0.76}{
\makebox{\shortstack[l]{
for child in rot[1]: \\
\qquad optimizer[child.tag]=child.text \\
\qquad print(child.tag) \\
\qquad if child.tag=='DVRange': \\
\qquad \qquad print(child.tag,child.text) \\
\qquad \qquad optimizer['DVRange']={} \\
\qquad \qquad for chch in child: \\
\qquad \qquad \qquad print(chch.tag,chch.text) \\
\qquad \qquad \qquad optimizer['DVRange'][chch.tag]=chch.text 
}}}

或者用下面的简单表示方法：

	\colorbox{black}{\textcolor{white}{sleep 10 \&}}

\section{参考文献的使用}
参考文献写在文件template.bib中，按照规定格式编辑即可，注意一下引用的名称。绝大部分的文献管理软件或者期刊检索网站都能提供BibTex格式的引用。
引用参考文献\cite{duan_2017_laoduan}，引用参考文献\cite{duan_2017_xiaoduan}。

%reference
\bibliography{template}
\end{document} 
